//---------------------------------------------------------------------------//
// Copyright (c) 2020-2021 Mikhail Komarov <nemo@nil.foundation>
// Copyright (c) 2020-2021 Nikita Kaskov <nbering@nil.foundation>
//
// MIT License
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//---------------------------------------------------------------------------//

#ifndef CRYPTO3_ALGEBRA_MP_DEFINES_HPP
#define CRYPTO3_ALGEBRA_MP_DEFINES_HPP

#include <nil/crypto3/multiprecision/number.hpp>
#include <nil/crypto3/multiprecision/cpp_int.hpp>
#include <nil/crypto3/multiprecision/cpp_modular.hpp>

BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(16)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(18)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(64)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(92)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(94)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(149)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(150)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(151)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(152)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(160)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(163)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(164)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(177)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(178)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(179)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(180)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(181)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(182)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(183)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(191)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(192)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(205)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(206)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(222)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(223)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(224)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(225)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(226)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(239)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(248)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(249)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(250)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(251)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(252)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(253)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(254)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(255)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(256)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(263)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(264)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(280)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(281)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(292)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(293)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(294)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(295)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(296)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(297)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(298)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(316)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(319)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(330)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(331)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(374)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(375)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(376)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(377)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(378)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(379)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(380)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(381)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(503)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(504)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(507)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(515)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(516)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(546)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(577)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(578)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(595)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(636)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(706)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(707)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(758)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(753)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(759)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(761)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(859)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(860)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(893)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(894)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(913)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(1024)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(1490)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(1536)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(2048)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(2790)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(3072)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(4096)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(4269)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(4314)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(6144)
BOOST_MP_DEFINE_SIZED_CPP_INT_LITERAL(8192)

#endif    // CRYPTO3_ALGEBRA_MP_DEFINES_HPP
